package com.qf.config;

import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 初始化类, 服务启动后第一个先加载运行这个类
 * @author 千锋健哥
 */
@Configuration
public class RabbitMQConfig {

    public static final String EXCHANGE_NAME = "testExchange";
    public static final String QUEUE_NAME = "testQueue";

    /**
     * 创建交换器
     * @return
     */
    @Bean
    public TopicExchange getTopicExchange() {
        //第一参数: 交换器名称, 第二参数:是否持久化, 第三参数: 是否自动删除
        return new TopicExchange(EXCHANGE_NAME, true, false);
    }

    /**
     * 创建队列
     * @return
     */
    @Bean
    public Queue getQueue() {
        /**
         * 第一参数: 队列名称
         * 第二参数: 是否持久化
         * 第三参数: 是否排外, 如果不是私有化的, 那么可以多个消费方同时连接这个队列进行消费
         * 第四参数: 是否自动删除
         */
        return new Queue(QUEUE_NAME, true, false, false);
    }

    /**
     * 绑定交换器和队列
     */
    @Bean
    public Binding getBinding(Queue queue, TopicExchange exchange) {
        return BindingBuilder.bind(queue).to(exchange).with("#.info.#");
    }
}
